(use srfi-9)




;;define o tipo sala. As salas são criadas em uma matrix onde cada sala está em um x e y
(define-record-type sala
  (sala nome descri x y itens personagens)
  sala?
  (nome nome-sala set-nome!)
  (descri descri-sala set-descri!)
  (x x set-x!)
  (y y set-y!)
  (itens item-sala set-item-sala!)
  (personagens pers-sala set-pers-sala!)
  )

;;(define ss1 (sala "biblioteca" "biblioteca ufabc" 1 1 '() '()))




;;função que verifica se um personagem está em uma sala


;;função que adiciona um personagem dentro da sala
(define add-pers-sala
  (lambda (sala personagem)
    (if (pers? personagem)
        (begin
          (set-pers-sala! sala (cons personagem (pers-sala sala)))
          #t)
        #f)))


(print (pers-sala s13))
(add-pers-sala s13 p1)
(rm-pers-sala s13 p1)


;;função que remove um personagem dentro da sala
(define rm-pers-sala
  (lambda (sala personagem)
    (let verif-pers ((lista (pers-sala sala))
                     (lista2 '()))
      (if (null? lista)
          (begin
            (set-pers-sala! sala lista2)
            #f)
            (if (equal? (car lista) personagem)
                (begin
                  (set! lista2 (append lista2 (cdr lista)))
                  (set-pers-sala! sala lista2)
                  #t)
                (begin
                  (set! lista2 (cons (car lista) lista2))
                  (verif-pers (cdr lista) lista2)))))))
          
   